DID模型TWFE估计及Bacon分解、事件研究、安慰剂检验_代码汇总
DID模型TWFE估计及Bacon分解、事件研究、安慰剂检验操作案例
主要使用的回归命令包括
xtdidregress
,一个内置的 Stata 命令,用于对面板数据运行 DID 回归。使用它后,我们可以使用estat
来创建趋势图并进行一些基本测试。xtreg
,areg
, andreghdfe
是为运行固定效应模型而编写的,但也可以很容易地应用于运行 DID 回归。sdid
,用于运行 SDID 的外部命令。通过该选项,我们还可以使用它来运行标准 DID 和合成控制法xthdidregress
, Stata 18 中引入的用于估计异质性DID的命令。请注意,命令xthdidregress
允许多种权重:ra
,ipw
, andaipw
estimators are from Callaway & Sant'Anna (2021) and thetwfe
estimator is from Wooldridge (2021).
培根分解、事件研究图和安慰剂试验
要使用的数据集可以通过运行以下代码加载到 Stata 中:
use "http://pped.org/bacon_example.dta", clear
面板数据包含 1964 年至1996 美国49个州,(包括华盛顿特区,但不包括阿拉斯加和夏威夷)的州级信息(特别是无过错离婚起始年份和自杀死亡率)。它们最初由Stevenson & Wolfers(2006)用于估计无过错(或单边)离婚对女性自杀率的影响。
在这里,我首先对无过错离婚改革的女性自杀(交错处理)运行静态TWFE DID模型估计:
where
状态固定效应;; 是年份固定的效果; 如果是一个虚拟变量,等于 1 如果大于或等于无过错离婚开始年份,则等于1,否则为0;; 控制变量. 处理自由采用单方面离婚法的州组成,而对照组由其余州组成。
来自以下所有命令的估计系数应相同(但由于算法不同,标准误差和 R 平方不同)。
xtdidregress (asmrs pcinc asmrh cases) (post), group(stfips) time(year) vce(cluster stfips)
xtreg asmrs post pcinc asmrh cases i.year, fe vce(cluster stfips)
areg asmrs post pcinc asmrh cases i.year, absorb(stfips) vce(cluster stfips)
reghdfe asmrs post pcinc asmrh cases, absorb(stfips year) cluster(stfips)
asmrs
是自杀死亡率,post
是虚拟变量。所有其他变量都是控制变量。Stata 报告的 DID 系数水平为 -2.516(标准误差为 2.283),与零差异不大。
然后我们可以将培根分解定理应用于TWFE DID模型。
bacondecomp asmrs post pcinc asmrh cases, ddetail
它报告数据集中有 14 个时间变化组别,包括一个从未处理的组和一个始终处理的组。最大权重分配给始终治疗组和随时间变化组之间的比较。
散点图在这里。
我们还可以使用xtdidregress
估计后的命令进行分解。
estat bdecomp, graph
请记住,培根分解是一种诊断工具,而不是补救措施。分解告诉我们 DID 模型中“错误比较”的严重性,但它无法治愈它。
结果为:
我运行的下一个回归是相应的动态 DID。我使用该命令是因为它可以同时运行模型并生成绘图。此命令允许一些基本的回归(例如 xtreg
and reghdfe
));为了绘制高级 DID 回归的结果,我推荐该包(将在下一个示例中详细介绍)。要使用 ,必须安装 两个软件包eventdd
和 matsort
。
最后,我通过随机和重复选择安慰剂处理时间并进行安慰剂检验,并运行TWFE回归1000次。这项工作是通过使用 Stata 内置命令permute
完成的。检验结果显示,我上面的估计可能不是来自不可观察的时间趋势。可以在此处看到安慰剂测试中的绘图(由加载项命令dpplot
创建)。
permute
命令进行随机置换检验,随机抽样500/1000次,可以查看推文:
2023年第6期《数量经济技术经济研究》最新应用_一行代码随机抽样500/1000次_DID安慰剂检验
推荐2篇2023年《中国工业经济》及《数量经济技术经济研究》上最新DID安慰剂检验方法——一行代码随机抽样500/1000次
第3篇DID学术“新星”_2023年第7期《数量经济技术经济研究》上最新DID安慰剂检验方法_一行代码随机抽样500/1000次
第4篇DID“学术新星”新方法__23年第7期《数量经济技术经济研究》上DID安慰剂检验方法_一行代码随机抽样500/1000次
完整代码如下:
**# 单方面离婚法案例代码合集
**# 1、导入数据
*** Bacon Decomposition ***************************************************
use "http://pped.org/bacon_example.dta", clear
* We see multiple treatment years.
tab year
tab _nfd // the year of the passage of no-fault divorce law
**# 2、DID模型估计Regression of female suicide on no-fault divorce reforms
eststo reg1: quietly reghdfe asmrs post pcinc asmrh cases, absorb(stfips year) cluster(stfips)
**# 3、 DID模型结果输出
estout reg1, keep(post pcinc asmrh cases _cons) ///
varlabels(_cons "Constant") ///
coll(none) cells(b(star fmt(3)) se(par fmt(3))) ///
starlevels(* .1 ** .05 *** .01) ///
stats(N r2_a, nostar labels("Observations" "R-Square") fmt("%9.0fc" 3))
**# 4、Bacon分解方法合集
* 进行Bacon分解"bacondecomp" command
bacondecomp asmrs post pcinc asmrh cases, ddetail
* Bacon分解图输出保存
graph export "DID_Decomposition_bacondecomp.pdf", replace
* Stata18里面最新的Bacon分解新操作
xtdidregress (asmrs pcinc asmrh cases) (post), group(stfips) time(year) vce(cluster stfips)
estat bdecomp, graph
graph export "DID_Decomposition_estat.pdf", replace
**# 5、事件研究
*** Event Study Plots *****************************************************
gen rel_time = year - _nfd
**# 6、最新命令eventdd,method选择为"xtreg"
eventdd asmrs pcinc asmrh cases i.year, ///
timevar(rel_time) method(fe, cluster(stfips)) ///
noline graph_op( ///
xlabel(-20(5)25, nogrid) ///
xline(0, lpattern(dash) lcolor(gs12) lwidth(thin)) ///
legend(order(1 "Point Estimate" 2 "95% CI") size(*0.8) position(6) rows(1) region(lc(black))) ///
)
* 最新命令eventdd,method选择为"reghdfe"
eventdd asmrs pcinc asmrh cases, ///
timevar(rel_time) method(hdfe, cluster(stfips) absorb(stfips year)) ///
noline graph_op( ///
xlabel(-20(5)25, nogrid) ///
xline(0, lpattern(dash) lcolor(gs12) lwidth(thin)) ///
legend(order(1 "Point Estimate" 2 "95% CI") size(*0.8) position(6) rows(1) region(lc(black))) ///
)
* Only balanced periods in which all units have data are shown in the plot.
eventdd asmrs pcinc asmrh cases i.year, ///
timevar(rel_time) method(hdfe, cluster(stfips) absorb(stfips year)) balanced ///
noline graph_op( ///
xlabel(, nogrid) ///
xline(0, lpattern(dash) lcolor(gs12) lwidth(thin)) ///
legend(order(1 "Point Estimate" 2 "95% CI") size(*0.8) position(6) rows(1) region(lc(black))) ///
)
* Only specified periods are shown in the plot; periods beyond the window are accumulated.
eventdd asmrs pcinc asmrh cases i.year, ///
timevar(rel_time) method(hdfe, cluster(stfips) absorb(stfips year)) ///
accum leads(5) lags(10) ///
noline graph_op( ///
xlabel(, nogrid) ///
xline(0, lpattern(dash) lcolor(gs12) lwidth(thin)) ///
legend(order(1 "Point Estimate" 2 "95% CI") size(*0.8) position(6) rows(1) region(lc(black))) ///
)
**# 7、安慰剂检验(permute+dpplot)
*** Placebo Test **********************************************************
**# 一行代码实现安慰剂检验,随机抽样500/1000次
* Randomly select a placebo treatment time and run TWFE regression for 1000 times
permute post coefficient=_b[post], reps(1000) seed(1) saving("$dtadir\placebo_test.dta", replace): reghdfe asmrs post pcinc asmrh cases, absorb(stfips year) cluster(stfips)
use "placebo_test.dta", clear
* install "dpplot"然后进行绘图
dpplot coefficient, ///
xline(-2.516, lc(red) lp(dash)) xline(0, lc(gs12) lp(solid)) ///
xtitle("Effect estimate") ytitle("Density of distribution") ///
xlabel(-3(1)2 -2.516, nogrid labsize(small)) ///
ylabel(, labsize(small)) caption("")
graph export "placebo_test_plot.pdf", replace
来源:https://github.com/IanHo2019/DID_Handbook
DID主题文章推荐
2023年第3期《数量经济技术经济研究》目录及计量方法汇总表(DID、DDD等)
《数量经济技术经济研究》上2篇最新DID论文:交错DID及小样本双重差分RI-DID
DID前沿论文推荐 |《中国工业经济》:交错DID及异质性—稳健DID(附代码实现)
推荐:《中国工业经济》2023年第2期-稳健DID估计量+Goodman Bacon分解
permute:DID安慰剂检验随机抽样500/1000次--2023年《中国工业经济》最新应用
2023新版_DID进展汇总:命令、书单、论文、文章资源汇总
理解DID出了什么问题?双向固定效应模型TWFE与异质性处理效应drdid和csdid
Bacon分解bacondecomp新+旧版本操作及ddtiming命令(三合一)操作应用
资源推荐:直接动态展示培根分解、事件研究和交错处理、断点回归、随机化推理
理解DID出了什么问题?双向固定效应模型TWFE与异质性处理效应drdid和csdid
书籍推荐:《因果推断:混音带》(内涵高级DID、合成控制法、机器学习和因果推理等资源课件)